//
// File  : BookingController.h
// Team  : Dangling Pointers
// Class : CST236 - Software Testing
//
// Interface for the  BookingController. Each Controller
// class contains the business logic in the system and
// MUST implement the displayMenu function.
//

#ifndef BOOKINGCONTROLLER_H
#define	BOOKINGCONTROLLER_H

#include "Controller.h"
#include "FlightDatabase.h"
#include "CustomerDatabase.h"
#include "FlightsController.h"


class BookingController : public Controller 
{
public:

	BookingController(FlightDatabase* , CustomerDatabase*);

private:

	FlightDatabase*   m_flightdatabase;
	CustomerDatabase* m_customerdatabase;

	// methods
	void              displayMenu();
	void              bookFlight();
	void              cancelFlight();
	void              printBoardingPass();
	std::string       promptUserName();
	std::string       getUserName();
	bool              validateName(std::string name);

	//
	// @overrided
	// copy constructor and operator= to prevent copying!
	//
	BookingController(const BookingController&);
	BookingController& operator=(const BookingController&);
};

#endif